// 认证工具函数
// 登录过期时间（毫秒）- 默认30分钟
const TOKEN_EXPIRE_TIME = 30 * 60 * 1000; // 30分钟
const TOKEN_KEY = 'token';
const TOKEN_EXPIRE_KEY = 'tokenExpireTime';

/**
 * 设置token和过期时间
 * @param {string} token - 登录token
 * @param {number} expireTime - 过期时间（毫秒），默认30分钟
 */
export function setToken(token, expireTime = TOKEN_EXPIRE_TIME) {
    if (!token) {
        return;
    }

    const expireTimestamp = Date.now() + expireTime;
    localStorage.setItem(TOKEN_KEY, token);
    localStorage.setItem(TOKEN_EXPIRE_KEY, expireTimestamp.toString());
}

/**
 * 获取token
 * @returns {string|null} token值，如果过期或不存在则返回null
 */
export function getToken() {
    const token = localStorage.getItem(TOKEN_KEY);
    const expireTime = localStorage.getItem(TOKEN_EXPIRE_KEY);

    // 如果没有token或过期时间，返回null
    if (!token || !expireTime) {
        return null;
    }

    // 检查是否过期
    const now = Date.now();
    const expireTimestamp = parseInt(expireTime, 10);

    if (now >= expireTimestamp) {
        // token已过期，清除存储
        clearToken();
        return null;
    }

    return token;
}

/**
 * 检查是否已登录（token存在且未过期）
 * @returns {boolean} 是否已登录
 */
export function isAuthenticated() {
    const token = getToken();
    if (token) {
        return true;
    }
    return false;
}

/**
 * 清除token和过期时间
 */
export function clearToken() {
    localStorage.removeItem(TOKEN_KEY);
    localStorage.removeItem(TOKEN_EXPIRE_KEY);
}

/**
 * 获取剩余过期时间（毫秒）
 * @returns {number} 剩余时间，如果已过期或不存在则返回0
 */
export function getRemainingTime() {
    const expireTime = localStorage.getItem(TOKEN_EXPIRE_KEY);
    if (!expireTime) {
        return 0;
    }

    const now = Date.now();
    const expireTimestamp = parseInt(expireTime, 10);
    const remaining = expireTimestamp - now;

    return remaining > 0 ? remaining : 0;
}